package com.zhoux.api.io.file;

import java.io.File;
import java.io.IOException;
import java.util.Arrays;

/**
 * @author taoyi
 * @version 1.0
 * @date 2021/3/16 8:47
 *
 * 本类用于测试文件流
 *
 *  E:\SoftwareEngineering\java\IO
 */
public class File_Test2 {
    public static void main(String[] args) {
        // 0.注意：需要手动在windows中创建 E:\SoftwareEngineering\java\IO\hello.txt
        // 1.创建 File对象
        File file = new File("E:\\SoftwareEngineering\\java\\IO\\hello.txt"); // 创建的是java对象，并非文件

        // 2. 测试常用方法
        // 2.1 文件与文件夹属性
        System.out.println(file.length()); // 获取指定文件的字节数
        System.out.println(file.exists()); // true,判断指定文件是否存在
        System.out.println(file.isFile()); // true,判断指定内容是否为文件
        System.out.println(file.isDirectory()); // false,判断指定内容是否为文件夹
        System.out.println(file.getName()); // 获取文件名
        System.out.println(file.getParent()); // 获取指定文件的父级文件目录
        System.out.println(file.getAbsoluteFile()); // 获取绝对路径

        // 2.2 创建与删除
        file = new File("E:\\SoftwareEngineering\\java\\IO\\zhoux.txt");
        try { // 如果指定创建的文件夹不存在，会抛出 java.io.IOException:系统找不到指定的路径
            System.out.println(file.createNewFile());

            // 创建不存在的单级目录
            file = new File("E:\\SoftwareEngineering\\java\\IO\\zhoux");
            System.out.println(file.mkdir());

            // 创建不存在的多层目录
            System.out.println(file);
            file = new File("E:\\SoftwareEngineering\\java\\IO\\zhouxs\\ty");
            System.out.println(file.mkdirs());

            file = new File("E:\\SoftwareEngineering\\java\\IO\\zhouxs\\ty");
            System.out.println(file.delete()); // 删除文件或空文件夹
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 2.3 文件列表
        file = new File("E:\\SoftwareEngineering\\java\\IO");
        // 查看文件夹下所有的名称，返回值类型是String[]
        String[] list = file.list();
        System.out.println(Arrays.toString(list));

        // 列出文件夹中所有的文件夹和文件对象，返回值是File[]
        File[] listFiles = file.listFiles();
        System.out.println(Arrays.toString(listFiles));
        System.out.println(listFiles[0].length());
    }
}

